]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Run the startup animation when we don't have much going on
authorJasper St. Pierre <jstpierre@mecheye.net>
Thu, 14 Feb 2013 03:45:43 +0000 (22:45 -0500)
committerRay Strode <rstrode@redhat.com>
Mon, 18 Feb 2013 20:37:59 +0000 (15:37 -0500)
Starting the startup animation when we don't have that much IO
makes it a lot more visible.

Based on a patch by Giovanni Campagna <gcampagna@src.gnome.org>

https://bugzilla.gnome.org/show_bug.cgi?id=682429

js/ui/layout.js
js/ui/main.js

index 062cbdd7ae08b528816965085b1ebf049164b62e..357a986017dfb9ae0214a4ed14405f93a4d9e13e 100644 (file)
@@ -229,7 +229,6 @@ const LayoutManager = new Lang.Class({
         Main.overview.connect('showing', Lang.bind(this, this._overviewShowing));
         Main.overview.connect('hidden', Lang.bind(this, this._overviewHidden));
         Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
-        this._startupAnimation();
     },
 
     _overviewShowing: function() {
@@ -465,9 +464,11 @@ const LayoutManager = new Lang.Class({
         return this._keyboardIndex;
     },
 
-    _startupAnimation: function() {
+    prepareStartupAnimation: function() {
         this.panelBox.translation_y = -this.panelBox.height;
+    },
 
+    startupAnimation: function() {
         let plymouthTransitionRunning = false;
 
         // If we're the greeter, put up the xrootpmap actor
index d7ba21339fdfb42343654bfe7c7c33e90cc8d551..22edfb904eff2e9e37f1540e30672568642d3883 100644 (file)
@@ -127,6 +127,7 @@ function startSession() {
 
     // Setup the stage hierarchy early
     layoutManager = new Layout.LayoutManager();
+
     // Various parts of the codebase still refers to Main.uiGroup
     // instead using the layoutManager.  This keeps that code
     // working until it's updated.
@@ -154,6 +155,7 @@ function startSession() {
     BackgroundMenu.addBackgroundMenu(global.background_actor);
 
     layoutManager.init();
+    layoutManager.prepareStartupAnimation();
     overview.init();
 
     global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
@@ -190,6 +192,14 @@ function startSession() {
 
     ExtensionDownloader.init();
     ExtensionSystem.init();
+
+    // Run the startup animation as soon as the mainloop is idle enough.
+    // This is necessary to have it smooth and without interruptions from
+    // completed IO tasks
+    GLib.idle_add(GLib.PRIORITY_LOW, function() {
+        layoutManager.startupAnimation();
+        return false;
+    });
 }
 
 let _workspaces = [];